package cn.legend.travel.comment.dao.persist.repository;

import cn.legend.travel.comment.pojo.entity.*;
import cn.legend.travel.comment.pojo.param.InsertCommentParam;
import cn.legend.travel.comment.pojo.vo.CommentListItemVO;
import cn.legend.travel.comment.pojo.vo.SecondCommentVo;
import cn.legend.travel.common.pojo.vo.PageData;

public interface CommentRepository {
    PageData<SecondCommentVo> getSecondComments(Long commentId, Integer pageSize, Integer pageNum);

    int insertSceneryComment(SceneryComment sceneryComment);

    int insertReviewComment(ReviewComment reviewComment);

    int insertHotelComment(HotelComment reviewComment);

    int insertGuideComment(GuideComment reviewComment);

    int insertDestinationComment(DestinationComment reviewComment);

    int insertDelicacyComment(DelicacyComment reviewComment);

    int insertProductComment(ProductComment reviewComment);

    PageData<CommentListItemVO> listByArticle(Long articleId, Integer pageNum, Integer pageSize);

    PageData<CommentListItemVO> listByDelicacy(Long delicacyId, Integer pageNum, Integer pageSize);

    PageData<CommentListItemVO> listByDestination(Long destinationId, Integer pageNum, Integer pageSize);

    PageData<CommentListItemVO> listByHotel(Long hotelId, Integer pageNum, Integer pageSize);

    PageData<CommentListItemVO> listByProduct(Long productId, Integer pageNum, Integer pageSize);

    PageData<CommentListItemVO> listByReview(Long reviewId, Integer pageNum, Integer pageSize);

    PageData<CommentListItemVO> listByScenery(Long sceneryId, Integer pageNum, Integer pageSize);

    PageData<SecondCommentVo> getProductSecondComments(Long commentId, Integer pageNum, Integer pageSize);

    PageData<SecondCommentVo> getScenerySecondComments(Long commentId, Integer pageNum, Integer pageSize);

    PageData<SecondCommentVo> getReviewSecondComments(Long commentId, Integer pageNum, Integer pageSize);

    PageData<SecondCommentVo> getHotelSecondComments(Long commentId, Integer pageNum, Integer pageSize);

    PageData<SecondCommentVo> getDelicacySecondComments(Long commentId, Integer pageNum, Integer pageSize);

    PageData<SecondCommentVo> getGuideSecondComments(Long commentId, Integer pageNum, Integer pageSize);

    PageData<SecondCommentVo> getDestinationSecondComments(Long commentId, Integer pageNum, Integer pageSize);

    DestinationComment getDestinationSecondComment(Long commentId);

    ProductComment getProductSecondComment(Long commentId);

    SceneryComment getScenerySecondComment(Long commentId);

    ReviewComment getReviewSecondComment(Long commentId);

    HotelComment getHotelSecondComment(Long commentId);

    DelicacyComment getDelicacySecondComment(Long commentId);

    GuideComment getGuideSecondComment(Long commentId);
}
